package com.ssy.lingxi.product.service.customer;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.product.api.model.request.CustomerAttributeValueRequest;
import com.ssy.lingxi.product.api.model.request.GoodsRequest;
import com.ssy.lingxi.product.api.model.request.SimpleIdListRequest;
import com.ssy.lingxi.product.api.model.request.commodity.CommodityAddRequest;
import com.ssy.lingxi.product.entity.customer.CustomerAttributeValue;
import org.springframework.data.domain.Page;

/**
 * 属性值管理类
 * @author jw.chen
 * @version 2.0.0
 * @date 2020/6/22
 */
public interface ICustomerAttributeValueService {

    /**
     * 同步平台后台属性
     * @param simpleIdListRequest 平台后台属性值id集合
     * @return
     */
    Boolean syncAttributeValue(UserLoginCacheDTO sysUser, SimpleIdListRequest simpleIdListRequest);

    /**
     * 查询属性值
     * @param customerAttributeValueId
     * @return Wrapper<?>
     */
    CustomerAttributeValue getCustomerAttributeValue(UserLoginCacheDTO sysUser, Long customerAttributeValueId);

    /**
     * 查询属性
     * @param pageVO
     * @param customerAttributeId
     * @param value
     * @return Wrapper<?>
     */
    Page<CustomerAttributeValue> getCustomerAttributeValueList(UserLoginCacheDTO sysUser, PageVO pageVO, Long customerAttributeId, String value);

    /**
     * 添加/修改属性值
     * @param customerAttributeValueRequest
     * @return
     */
    Long saveOrUpdateCustomerAttributeValue(UserLoginCacheDTO sysUser, CustomerAttributeValueRequest customerAttributeValueRequest);

    /**
     * 删除属性值
     * @param customerAttributeValueId
     * @return
     */
    String deleteCustomerAttributeValue(UserLoginCacheDTO sysUser, Long customerAttributeValueId);

    /**
     * 启用/停用属性值
     * @param id
     * @param status
     * @return
     */
     String updateCustomerAttributeValueStatus(UserLoginCacheDTO sysUser, Long id, Boolean status);

    /**
     * 判断是否有自定义属性，有的话先新增
     * @param sysUser
     * @param commodityRequest
     */
    void saveCustomerAttributeValue(UserLoginCacheDTO sysUser, CommodityAddRequest commodityRequest);

    /**
     * 判断是否有自定义属性，有的话先新增
     * @param sysUser 当前操作用户
     * @param goodsRequest 请求参数
     */
    void saveGoodsCustomerAttributeValue(UserLoginCacheDTO sysUser, GoodsRequest goodsRequest);
}
